.TH qmail-pw2u 8
.SH NAME
qmail-pw2u \- build address assignments from a passwd file
.SH SYNOPSIS
.B qmail-pw2u
[
.B \-/ohHuUC
]
[
.B \-c\fIchar
]
.SH DESCRIPTION
.B qmail-pw2u
reads a V7-format passwd file from standard input
and prints a
.BR qmail-users -format
assignment file.

A V7-format passwd file is a series of lines.
Each line has the format

.EX
   user:password:uid:gid:gecos:home:shell
.EE

where
.I user
is an account name,
.I uid
and
.I gid
are the user id and group id of that account,
and
.I home
is the account's home directory.
.IR password ,
.IR gecos ,
and
.I shell
are ignored by
.BR qmail-pw2u .

If you put the output of
.B qmail-pw2u
into
.BR QMAILHOME/users/assign ,
and then run
.BR qmail-newu ,
.B qmail-lspawn
will obey the assignments printed by
.BR qmail-pw2u .
.B WARNING:
After changing any users, uids, gids, or home directories
in your passwd file,
you must run
.B qmail-pw2u
and
.B qmail-newu
again if you want
.B qmail-lspawn
to see the changes.
.SH RULES
By default,
.B qmail-pw2u
follows the same rules as
.BR qmail-getpw .
It skips
.I user
if (1)
.I uid
is zero,
(2)
.I home
does not exist,
(3)
.I user
does not own
.IR home ,
or
(4)
.I user
contains uppercase letters.
It then gives each remaining
.I user
control over the basic
.I user
address and
all addresses of the form
.IR user\fBBREAK\fIanything .
A catch-all user,
.BR alias ,
controls all other addresses.

You may change these rules by setting up files in
.BR QMAILHOME/users :
.TP
.B include
Allowed users, one per line.
If
.B include
exists, and
.I user
is not listed in
.BR include ,
.I user
is ignored.
.TP
.B exclude
Ignored users, one per line.
If
.B exclude
exists, and
.I user
is listed in
.BR exclude ,
.I user
is ignored.
.TP
.B mailnames
Replacement names for users.
Each line has the form

.EX
   user:mailname1:mailname2:...
.EE

The addresses
.I mailname1
and
.I mailname1\fBBREAK\fIext
and
.I mailname2
and so on will be delivered
to
.IR user .

.B WARNING:
The addresses
.I user
and
.I user\fBBREAK\fIext
will not be delivered to
.I user
unless
.I user
is listed as one of the
.IR mailname s.

A line in
.B mailnames
is silently ignored if the user does not exist.
.TP
.B subusers
Extra addresses.
Each line has the form

.EX
   sub:user:pre:
.EE

.I sub
will be handled by
.IR home\fB/.qmail\-\fIpre ,
where
.I home
is
.IR user 's
home directory;
.I sub\fBBREAK\fIext
will be handled by
.IR home\fB/.qmail\-\fIpre\fB\-\fIext .
.TP
.B append
Extra assignments,
printed at the end of
.BR qmail-pw2u 's
output.
.SH OPTIONS
.TP
.B \-o
(Default.)
Skip
.I user
if
.I home
does not exist (or is not visible to
.BR qmail-pw2u ).
Skip
.I user
if
.I home
is not owned by
.IR user .
.TP
.B \-h
Stop if
.I home
does not exist.
This is appropriate if every user is supposed to have a home directory.
Skip
.I user
if
.I home
is not owned by
.IR user .
.TP
.B \-H
Do not check the existence or ownership of
.IR home .
.TP
.B \-U
(Default.)
Skip
.I user
if there are any uppercase letters in
.IR user .
.TP
.B \-u
Allow uppercase letters in
.IR user .
.TP
.B \-c\fIchar
Use
.I char
as the user-extension delimiter
in place of
.BR BREAK .
.TP
.B \-C
Disable the user-extension mechanism.
.TP
.B \-/
Use
.IR home\fB/.qmail\-/ ...
instead of
.IR home\fB/.qmail\- ...
.SH "SEE ALSO"
qmail-users(5),
qmail-lspawn(8),
qmail-newu(8),
qmail-getpw(8)
